/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Classes;

/**
 *
 * @author Gustavo-Note
 */
public class Trapezio {

    public double getBaseA() {
        return baseA;
    }

    public void setBaseA(double baseA) throws AppException {
        if(baseA <= 0) {
            throw new AppException(MSG_BASE_NEGATIVA);
        }
        this.baseA = baseA;
    }

    public double getBaseB() {
        return baseB;
    }

    public void setBaseB(double baseB) throws AppException {
        if(baseB <= 0) {
            throw new AppException(MSG_BASE_NEGATIVA);
        }
        this.baseB = baseB;
    }

    public double getAltura() {
        return altura;
    }

    public void setAltura(double altura) throws AppException {
        if(altura <= 0) {
            throw new AppException(MSG_ALTURA_NEGATIVA);
        }
        this.altura = altura;
    }

    public Trapezio(double baseA, double baseB, double altura) throws AppException {
        if(baseA <= 0 || baseB <= 0){
            throw new AppException(MSG_BASE_NEGATIVA);
        }
        else if(altura <= 0){
            throw new AppException(MSG_ALTURA_NEGATIVA);
        }
        else{
            this.baseA = baseA;
            this.baseB = baseB;
            this.altura = altura;
        }
    }
    
    public double area() {
        return altura * ((baseA+baseB)/2);
    }
    
    public double perimetro() {
        double aux;
        if(baseA > baseB){
            aux = (baseA - baseB) / 2;
        }
        else if (baseB > baseA){
            aux = (baseB - baseA) / 2;
        }
        else {
            return (2*baseA) + (2*altura);
        }
        
        return baseA + baseB + (2*aux);
    }
    
    private double baseA;
    private double baseB;
    private double altura;
    
    public static final String MSG_BASE_NEGATIVA = "Base não pode ser negativa.";
    public static final String MSG_ALTURA_NEGATIVA = "Altura não pode ser negativa.";
}
